package educar.Carrera;

import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;

import educar.db.DbConnection;
import educar.db.JPA;
import educar.materia.Materia;
import educar.materia.MateriaNoEncontrada;
import educar.Carrera.*;

public class CarreraController {
	
	private static JPA jpa = new JPA();
	
	public static boolean existe(String cod){
		try {
			Carrera car = getCarrera(cod);
			return true;
		} catch (CarreraNoEncontrada ex) {
			return false;
		}
	}
	
	/**
	 * Este metodo nos permite agregar un carrera en la base de datos, es decir agregar un 
	 * nuevo registro en la tabla carrera.
	 * @param a
	 */
	public static void saveCarrera(Carrera a){
		String[]d={"codigo","nombre","cod_facultad"};
		PreparedStatement stm= jpa.newRecord(DbConnection.bd+".carrera", d);
		try {
			stm.setString(1,a.getCodigo());
			stm.setString(2,a.getNombre());
			stm.setString(3,a.getCodFacultad());
		} catch (SQLException e) {
			e.printStackTrace();
		}
		jpa.create(stm);
	}
	
	/**
	 * Retorna una instancia de la clase carrera obteniada de la base de datos.
	 * @param codigo
	 * @return
	 * @throws CarreraNoEncontrada
	 */
	public static Carrera getCarrera(String codigo) throws CarreraNoEncontrada{
    	ResultSet rs = null;
		Carrera carrera = null;
		rs = jpa.getByField("carrera", "codigo", codigo);
		try {
			if (rs.next()) {
				carrera = new Carrera(rs.getString(1), rs.getString(2),rs.getString(3));
			} else {
				throw new CarreraNoEncontrada();
			}
		} catch (SQLException e) {
			e.printStackTrace();
		}
		return carrera;
    }

	

}
